package com.ocean;

import java.rmi.RemoteException;

import com.ocean.common.exception.ClosetoOverException;
import com.ocean.exception.LeaderException;

public interface Park extends ParkActive {
	// public <T extends java.io.Serializable> ObjValue create(String domain,
	// String node, T obj, String sessionid, int auth, boolean heartbeat) throws
	// RemoteException;//acl
	// public <T extends java.io.Serializable> ObjValue update(String domain,
	// String node, T obj, String sessionid) throws RemoteException;//acl
	public ObjValue create(String domain, String node, byte[] bts,
			String sessionid, int auth, boolean heartbeat)
			throws RemoteException, ClosetoOverException;// acl

	public ObjValue update(String domain, String node, byte[] bts,
			String sessionid) throws RemoteException, ClosetoOverException;// acl

	public boolean update(String domain, int auth, String sessionid)
			throws RemoteException;

	public ObjValue get(String domain, String node, String sessionid)
			throws RemoteException, ClosetoOverException;

	public ObjValue getLastest(String domain, String node, String sessionid,
			long version) throws RemoteException, ClosetoOverException;

	public ObjValue delete(String domain, String node, String sessionid)
			throws RemoteException, ClosetoOverException;

	public String getSessionId() throws RemoteException;

	public boolean heartbeat(String[] domainnodekey, String sessionid)
			throws RemoteException;

	public ObjValue getParkinfo() throws RemoteException;

	public boolean setParkinfo(ObjValue ov) throws RemoteException;

	public String[] askMaster() throws RemoteException;

	public boolean askLeader() throws RemoteException, LeaderException;
	// public List<ObjValue> getNodesInDomain(String domain, String sessionid)
	// throws RemoteException;
	// putInfo(parkinfo)
	// heartbeat(String sessionid)
	// put(String domain, String node, T obj, String sessionid, ACL, heartbeat)
}